import os
import shutil
import pandas as pd

class Utils:
    """
    工具类，提供各种工具方法
    
    主要功能：
    - 保存数据到CSV文件
    - 删除文件夹中的文件
    - 复制文件到指定目录
    """
    
    @staticmethod
    def save_to_csv(data, file_path='output_t.csv'):
        """
        将数据保存到CSV文件
        
        参数：
            data (numpy.ndarray): 要保存的数据
            file_path (str): 文件保存路径
        """
        try:
            df = pd.DataFrame(data)
            df.to_csv(file_path, mode='a', header=not pd.io.common.file_exists(file_path), index=False)
            print(f"数据已成功追加到 {file_path}")
        except Exception as e:
            print(f"保存数据到 CSV 文件时出错: {e}")

    @staticmethod
    def delete_files_in_folder(folder_path):
        """
        删除指定文件夹中的所有文件和子文件夹
        
        参数：
            folder_path (str): 要清空的文件夹路径
        """
        try:
            # 遍历文件夹下的所有内容
            for root, dirs, files in os.walk(folder_path):
                for file in files:
                    file_path = os.path.join(root, file)
                    # 删除文件
                    os.remove(file_path)
                for dir in dirs:
                    dir_path = os.path.join(root, dir)
                    # 删除子文件夹
                    shutil.rmtree(dir_path)
            print(f"文件夹 {folder_path} 下的所有文件和子文件夹已成功删除。")
        except FileNotFoundError:
            print(f"错误: 文件夹 {folder_path} 未找到。")
        except Exception as e:
            print(f"错误: 发生了一个未知错误: {e}")
            
    @staticmethod
    def copy_file_to_data(source_file_path):
        """
        将文件复制到data目录下
        
        参数：
            source_file_path (str): 源文件路径
        """
        # 目标目录
        target_directory = 'data'

        # 检查 data 目录是否存在，如果不存在则创建
        if not os.path.exists(target_directory):
            os.makedirs(target_directory)

        try:
            # 获取源文件的文件名
            file_name = os.path.basename(source_file_path)
            # 构建目标文件的完整路径
            target_file_path = os.path.join(target_directory, file_name)
            # 复制文件
            shutil.copy2(source_file_path, target_file_path)
            print(f"文件 {source_file_path} 已成功复制到 {target_file_path}")
        except FileNotFoundError:
            print(f"错误: 源文件 {source_file_path} 未找到。")
        except Exception as e:
            print(f"错误: 发生了一个未知错误: {e}")